package com.dartfar.base.service;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.dartfar.base.dao.DaoUtil;
import com.dartfar.base.model.Person;
import com.dartfar.base.model.Role;
import com.dartfar.base.model.T_User;
import com.dartfar.base.vo.RoleVo;

@Component("roleService")
public class RoleServiceImpl extends BaseServiceImpl<Role> implements RoleService {

	private DaoUtil<Role> roleDaoUtil;
	private DaoUtil<T_User> userDaoUtil;

	/**
	 * 根据角色ID判断是否存在用户
	 * @param id 角色ID
	 */
	public boolean existUsersByRoleId(int id){
		boolean flag = false;
		Role role = roleDaoUtil.get(id,Role.class);
		List<Person> persons = role.getPersons();
		if(persons.size() > 0){
			flag = true;
		}
		return flag;
	}

	/**
	 * 假删除角色
	 * @param id 角色ID
	 */
	@Override
	public void falseDelete(int id) {
		Role role = roleDaoUtil.get(id,Role.class);
		//role.setDeleteState(true);
		roleDaoUtil.update(role);
	}
	
	/**
	 * 获取角色列表
	 * @return 角色列表
	 */
	@Override
	public List<Role> getList() {
		// and r.systemState=false
		return roleDaoUtil.getList("from Role r");
	}


	/**
	 * 获取第一个角色
	 * @return 角色
	 */
	@Override
	public Role getFirst() {
		// and r.systemState=false
		List<Role> roleList = roleDaoUtil.getListForPage("from Role r", 0, 1);
		if(roleList.size() != 0){
			return roleList.get(0);
		}else{
			return null;
		}
	}

	/**
	 * 根据ID获取角色
	 * @param id 角色ID
	 * @return 角色
	 */
	@Override
	public Role get(int id) {
		return roleDaoUtil.get(id,Role.class);
	}

	/**
	 * 根据多个角色的ID获取功能列表 
	 * @param functionIds 多个角色的ID 格式:1,2,3 
	 * @return 返回角色列表 
	 */
	@Override
	public List<Role> getListByIds(String roleIds) {		
		//and r.systemState=false 
		return roleDaoUtil.getList("from Role r where r.roleId in ("+ roleIds +")");
	}

	public DaoUtil<Role> getRoleDaoUtil() {
		return roleDaoUtil;
	}

	@Resource
	public void setRoleDaoUtil(DaoUtil<Role> roleDaoUtil) {
		this.roleDaoUtil = roleDaoUtil;
	}

}
